home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_009 / proff / map.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  73 lines

  1.  
  2.  
  3. #include <stdio.h>
  4. /*
  5.  * map map every character of s1 that is specified in s2
  6.  * into s3 and replace in s. (source s1 remains untouched)
  7.  */
  8.  
  9. map(s,s1,s2,s3)
  10. register char *s;
  11. register char *s1;
  12. register char *s2;
  13. register char *s3;
  14. {
  15.     char *t, *t1;
  16.     if (*s1 != '\0') {
  17.         t = s;
  18.         t1 = s1;
  19.         strcpy(t,t1);
  20.  
  21.         while (*s2 != '\0' && *s3 != '\0') {
  22.             while (*t1 != '\0') {
  23.                 if (*t1 == *s2)
  24.                     *t = *s3;
  25.                 t++; 
  26.                 t1++;
  27.             }
  28.             t = s;
  29.             t1 = s1;
  30.             s2++;
  31.             s3++;
  32.         }
  33.     }
  34.     else
  35.         *s = '\0';
  36. }
  37.  
  38. /*
  39.  * roman - convert a numeric string into roman numerals
  40.  *
  41.  * icon version:
  42.  *procedure roman(n)
  43.  * local arabic, result
  44.  * static equiv
  45.  * initial equiv := ["","I","II","III","IV","V","VI","VII","VIII","IX"]
  46.  * integer(n) > 0 | fail
  47.  * result := ""
  48.  * every arabic := !n do
  49.  *    result := map(result,"IVXLCDM","XLCDM**") || equiv[arabic+1]
  50.  * if find("*",result) then fail else return result
  51.  * end
  52.  *
  53.  */
  54. int 
  55. cvtroman(num,rom)
  56. char *num;
  57. char *rom;
  58. {
  59.     char tmp[20];
  60.  
  61. static char *equiv_U[] = { "","I","II","III","IV","V","VI","VII","VIII","IX" };
  62.  
  63.     *rom = NULL;
  64.     while (*num != '\0') {
  65.         map(tmp,rom,"IVXLCDM","XLCDM**");
  66.         strcpy(rom,tmp);
  67.         strcat(rom,equiv_U[*num - '0']);
  68.         num++;
  69.     }
  70.     return(strlen(rom));
  71. }
  72.  
  73.